.\" 
.\" mono manual page.
.\" (C) Ximian, Inc. 
.\" Author:
.\"   Miguel de Icaza (miguel@gnu.org)
.\"
.TH Mono "Mono 1.0"
.SH NAME
mono \- Mono ECMA-CLI Just in Time compiler.
.SH SYNOPSIS
.PP
.B mono
[\-\-help] [\-d] [\-\-debug-asm] [\-\-debug-forest] [\-\-trace-calls]
[\-\-compile name] [\-\-ncompile num]  [\-\-noinline] [\-\-profile]
[\-\-debug=[format]] [\-\-debug-args args] [\-\-break name] [\-\-precompile name]
[\-\-config filename]
program.exe [arguments...]
.SH DESCRIPTION
The \fImono\fP program is a Just in Time compiler for ECMA CLI byte
codes.  It translates dynamically a CIL stream into native code. 
.I program.exe
and optionally passes
the
.I arguments
to it. 
.SH OPTIONS
The following options are supported:
.TP
.I "--help", "-h"
Displays usage instructions.
.TP
.I "--share-code"
This mode makes the LoaderOptimization for Application Domains default
to sharing code.  This results in slower code, but enables code
sharing across application domains.  The default is to maximize for
speed, but disallow JITed code sharing across domains.  See
System.LoaderOptimization for more information
.TP
.I "--config filename"
Load the specified configuration file instead of the default one(s).
The default files are /etc/mono/config and ~/.mono/config or the file
specified in the MONO_CONFIG environment variable, if set.
.TP
.I "--noinline"
Disables the code inliner.
.TP
.SH DEBUGGING OPTIONS
The following options are used to debug, or perfomance test the JIT
compiler:
.TP
.I "--trace-calls"
Shows method names as they are invoked.
.TP
.I "--dump-asm"
Displays the generated code as methods are invoked.
.TP
.I "--dump-forest"
Displays the basic blocks and the forest of trees that is 
created from a stream of CIL opcodes.
.TP
.I "--compile name"
Compiles the method on the given class (namespace.name:methodname) or
all classes in the given image (@imagename).
.TP
.I "--ncompile"
Compiles the method a number of times.  If no argument is specified,
the method will be compiled a thousand times.
.SH DEVELOPMENT OPTIONS
The following options are used to debug a JITed application.  They're
only useful when running the JIT in a debugger:
.TP
.I "--debug"
Writes out debug information in the given format or in the default format.
See DEBUGGING FORMATS for details.
.TP
.I "--debug-args args"
Comma-separated list of additional arguments for the symbol writer.
See DEBUGGING FORMATS for details.
.TP
.I "--break method"
Inserts a breakpoint before the method whose name is `method'
(namespace.class:methodname).  Use `Main' as method name to insert a breakpoint on the
application's main method.
.TP
.I "--precompile name"
Compiles the given class (namespace.name), method (namespace.name:methodname)
or all classes in the given image (@imagename) before executing the main
application.
.TP
.I "--profile"
Collect profiling information and dump it at the end of the process.
.SH DEBUGGING FORMATS
The following debugging formats are currently supported:
.TP
.I "stabs"
Writes out stabs debug information.
.TP
.I "dwarf"
Writes out dwarf debug information.
.TP
.I "mono"
Use a symbol file which has been created by MCS.  It can be used to get
source lines in stack traces.
.PP
The "stabs" and "dwarf" formats support the following options:
.TP
.I "filename=FILENAME"
Write debugging information into FILENAME.  This file must be run through
the assembler to create an object file.
.TP
.I "objfile=FILENAME"
When automatically assembling the symbol file, write the resulting object
file into FILENAME.
.TP
.I "dont_assemble"
Normally, the symbol file is automatically assembled to an object file
when you call "mono_debug_make_symbols".  Use this option to disable this
behaviour.
.TP
.I "install_il_files"
Put the generated *.il files in the same directory than the assembly they
came from.  The default is to put them into the current working directory.
.TP
.I "dont_update_il_files"
Normally, the *.il files are recreated if their assemblies have changed
when you call "mono_debug_make_symbols".  Use this option to disable this
behaviour.
.TP
.I "dont_create_il_files"
Update the *.il files if their assemblies have changed, but only if the
file already exists.
.PP
.SH ENVIRONMENT VARIABLES
.TP
.I "MONO_PATH"
Provides a search path to mono and mint where to look for library files.
Directories are separated by the platform path separator (colons on unix). Example:
.B /home/username/lib:/usr/local/mono/lib
.PP
.TP
.I "MONO_DISABLE_SHM"
If this variable is set, it disables the Windows I/O Emulation layer,
and handles (files, events, mutexes, pipes) will not be shared across
processes.  This option is only available on Unix.
.TP
.I "MONO_CFG_DIR"
If set, this variable overrides the default system configuration directory
($PREFIX/etc). It's used to locate machine.config file.
.TP
.I "GC_DONT_GC"
Turns off the garbage collection in Mono.  This should be only used
for debugging purposes
.TP
.I "MONO_CONFIG"
If set, this variable overrides the default runtime configuration file
($PREFIX/etc/mono/config). The --config command line options overrides the
environment variable.
.SH FILES
On Unix assemblies are loaded from the installation lib directory.  If you set
`prefix' to /usr, the assemblies will be located in /usr/lib.  On
Windows, the assemblies are loaded from the directory where mono and
mint live.
.PP
/etc/mono/config, ~/.mono/config
.IP
Mono runtime configuration file.  See the mono-config(5) manual page
for more information.
.SH MAILING LISTS
Visit http://lists.ximian.com/mailman/listinfo/mono-list for details.
.SH WEB SITE
Visit: http://www.go-mono.com for details
.SH SEE ALSO
.BR mcs(1), mint(1), monodis(1), mono-config(5)


